<?php 
/**
* 
*/
class IntervencionesController extends Sgit_Controller_Action
{

    protected $_checkZona   = false;
    protected $_checkAcceso = true;
    protected $_main_model  = 'Intervenciones';
    protected $_main_form   = 'Intervenciones';
    
    function _begin()
    {
        $this->_file_upload[1] = Sgit_Util_FileUpload::run('intervenciones', 'file');
    }
    
    
    
	public function indexAction()
	{
	   

       
        $fecha=new Zend_Date();
        $fecha->setDay(1);
        
       
        if(!$this->_getParam('mes'))
        {
            $this->setParam('mes',date('n'));
            $fecha->setMonth(date('n'));
        }
        
        
        if(!$this->_getParam('anio'))
        {
            $this->setParam('anio',date('Y'));
            $fecha->setYear(date('Y'));
        }
        
        
        if(!$this->_getParam('id_zona') )
        {
            if($this->_getParam('idZona')) $this->setParam('id_zona',$this->_getParam('idZona'));
        }



        $filtros = new Sgit_Form_Filtros();
        $f_anio = new Sgit_Form_Element_Select_Year('anio');
        $filtros->addFormSelect($f_anio);
        
        $f_mes = new Sgit_Form_Element_Select_Mes('mes');
        $filtros->addFormSelect($f_mes);
        $f_zona = new Sgit_Form_Element_Select_Datacenter('id_zona');
        $filtros->addFormSelect($f_zona);
        
        $values = $this->_getFiltrosValues($filtros);
        $filtros->myRender();

        
        
        $fecha=new Zend_Date();
        $fecha->setDay(1);
       
        if($values['mes'])
        {
            $fecha->setMonth($values['mes']);
        }
        
        if($values['anio'])
        {
            $fecha->setYear($values['anio']);
        }
        

        
        for($i=0;$i<12;$i++)
        {
            $data=$this->getDays($fecha->toString(Zend_Date::ISO_8601),'',$values['id_zona']);
            $calendario[]=array('fecha'=>$fecha->toString(Zend_Date::ISO_8601),'data'=>$data);
            $fecha->add(1,Zend_Date::MONTH);
        }
	    $this->view->calendario=$calendario;
        
        
     
	}
    
    
    
    public function getDays($fecha,$fecha_fin,$id_zona)
    {
        
        if(!$fecha instanceof Zend_Date)
        {
            $fecha=new Zend_Date($fecha,Zend_Date::ISO_8601);
		}

        $rows=$this->_model->default->getIntervenciones($fecha,'',$id_zona);

		foreach($rows as $v)
        {
			$dia=$v['dia'];
            $days[$dia][]=$this->_createli($v);          
		}
		return $days;
	}
    
    
    
    
    
    
    
    
    
    
    
    
    
	public function comiteAction()
	{

        //mes actual
        $fecha=new Zend_Date();
        
        $fecha_fin= new Zend_Date();
        $fecha_fin=$fecha_fin->addDay(25)->toString('yyyy-MM-dd');
        

        $data=$this->getDaysComite($fecha->toString(Zend_Date::ISO_8601),$fecha_fin,$this->_idZona);
        $calendario[]=array('fecha'=>$fecha->toString(Zend_Date::ISO_8601),'data'=>$data);
        
        //mes siguiente
        $fecha->addMonth(1);
       	$data=$this->getDaysComite($fecha->toString(Zend_Date::ISO_8601),$fecha_fin,$this->_idZona);
        if($data)
            $calendario[]=array('fecha'=>$fecha->toString(Zend_Date::ISO_8601),'data'=>$data);
      
       
      
	    $this->view->calendario=$calendario;

	}
    
    
    
    public function getDaysComite($fecha,$fecha_fin,$id_zona)
    {
        
        if(!$fecha instanceof Zend_Date)
        {
            $fecha=new Zend_Date($fecha,Zend_Date::ISO_8601);
		}


        $anio=$fecha->toString('yyyy');
        $mes=$fecha->toString('M');


        $rows=$this->_model->default->getIntervenciones($fecha,$fecha_fin,$id_zona);


		foreach($rows as $v){
			$dia=$v['dia'];

            $class="d".$v['id_zona'];
			
            
			$fecha=new Zend_Date($v['fecha'],Zend_Date::ISO_8601);
            
            if($v['hora_inicio']){
                $fecha->set($v['hora_inicio'],'WW');
                $hora_inicio=$fecha->toString('H:mm ');
            }else{
                $hora_inicio='';
            }
                
            
            
           
            
            
			$lanzar=new Zend_Date($v['lanzar']);
			
            
			$titulo2 =Sgit_Cache::single()->model('Datacenter')->getKey($v['id_zona']).' '.$fecha->toString('EEEE, d MMMM yyyy').'<br>'. $v['nombre'];
			
			$titulo=$hora_inicio.Sgit_Cache::single()->model('Datacenter')->getKey($v['id_zona']).' '.$v['nombre'];
			
			$titulo2 =Sgit_Cache::single()->model('Datacenter')->getKey($v['id_zona']).' '.$fecha->toString('EEEE, d MMMM yyyy').'<br>'. $v['nombre'];
			
			$titulo='<b>'.$hora_inicio.'</b>'.Sgit_Cache::single()->model('Datacenter')->getKey($v['id_zona'],'ini').' '.$v['nombre'];
			
            
			
			if($v['cambio_aceptado']=='SI'){
			  $cambio_aceptado='aceptado';
			}elseif($v['cambio_aceptado']=='NO'){
			  $cambio_aceptado='denegado';
			}else{
			  $cambio_aceptado='propuesta';
			}
            
			$days[$dia][]='<li id="fila-'.$v['id'].'" class="item '.$class.' '.$cambio_aceptado.'"><a id="'.$v['id'].'" class="jTip"  rel="/intervenciones/tip/id/'.$v['id'].'" title="'.$titulo2.'">'.$titulo.' </a>' .
						  '<div class="conf">';
                    
            if($cambio_aceptado=='propuesta'){
               
                $days[$dia][].='<span class="boton"><a class="button_aceptar cambiar" id="6-'.$v['id'].'-SI">Aceptar</a>&nbsp;</span> ';
                $days[$dia][].='<span class="boton"><a class="button_rechazar cambiar" id="6-'.$v['id'].'-NO">Rechazar</a>&nbsp;</span>';         
            }elseif($cambio_aceptado=='aceptado'){
                $days[$dia][].='<span class="boton"><a class="button_aceptar cambiar" id="6-'.$v['id'].'-SI" style="display:none">Aceptar</a>&nbsp;</span> ';
                $days[$dia][].='<span class="boton"><a class="button_rechazar cambiar" id="6-'.$v['id'].'-NO">Rechazar</a>&nbsp;</span>';
            }else{
                $days[$dia][].='<span class="boton"><a class="button_aceptar cambiar" id="6-'.$v['id'].'-SI">Aceptar</a>&nbsp;</span> ';
                $days[$dia][].='<span class="boton"><a class="button_rechazar cambiar" id="6-'.$v['id'].'-NO" style="display:none">Rechazar</a>&nbsp;</span>';  
            }
            
            $days[$dia][].='</div></li>';
                          
		}
		return $days;
	}
    
    
    
    public function tipAction()
    {

        $this->_helper->layout->disableLayout();

        $id = $this->_getParam('id');
        $row = $this->_model->default->getRow($id);




          
        $msg='';
        if($row['cambio_aceptado']=='SI'){
            $msg.="<img src='/img/agt_action_success.png' width='25px' hegiht='25px'> ".$this->view->translate('Propuesta de Cambio')."<b>".$this->view->translate('Aceptada')."</b><br>".$row['notas_cambio'];
            $tipo='atencion';
        } 
        elseif($row['cambio_aceptado']=='NO'){
            $msg.="<img src='/img/agt_action_fail.png' width='25px' hegiht='25px'> ".$this->view->translate('Propuesta de Cambio')."<b>".$this->view->translate('Rechazada')."</b><br>".$row['notas_cambio'];
            $tipo='error';
        } 
        else {
            $msg.=$this->view->translate('Propuesta de Cambio Pendiente de aprobación')."<br>".$row['notas_cambio'];
            $tipo='atencion';
        }
          
      //  $row['cambio_aceptado']= $this->($msg,$tipo,null,false);
        
        $row['cambio_aceptado']= $this->view->partial("snnipet/$tipo.phtml",array('msg'=>$msg));



        $departamento=new Sgit_Form_Element_Select_Xml('DCDepartamentos');
        $row['area']=$departamento->getMultiOption($row['id_departamento']);
        
        
        $this->view->row=$row;
        
        
    }


    public function insertarAction()
    {
        $this->_rowjson();
        $this->_insertar();
    }    
    
    protected function _executeInsertar()
    {
        $data = $this->_prepareValuesToDb();
        
        $this->_id = $this->_model->default->insertRow($data);

        $row=$this->_model->default->getRow($this->_id);
        $day['fila'] = $this->_createli($row);   

        $day['status'] = 'row';
        $day['divfecha'] = 'c-'.$row['fecha'];
        $this->_helper->json($day);
        
    }

    public function editarAction()
    {
        $this->_rowjson();
        $this->_editar();
    }
    
    public function borrarAction()
    {
        $this->_reload();
        $this->_borrar();
    }

    public function copyAction()
    {
        $this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender(TRUE);
        
        $id=substr($this->_getParam('id'),5);
        $date=$this->_getParam('date');
        
        
        $row=$this->_model->default->getRow($id);

        $row['lanzar'] =$this->_calculaLanzar($date);
        $row['fecha']=$date;
        $record['responsable']=$this->_auth->getIdentity()->id;
        $record['cambio_aceptado']=null;
        $record['responde_cambio']=null;
        $record['notas_cambio']=null;
        $record['fecha_peticion_cambio']=$this->_calculaLanzar($date,25);
        
        unset($row['id']);
        
        $newid= $this->_model->default->insertRow($row,$id);
        $json['id']=$newid;
        $this->_helper->json($json);
        
    }

    public function moveAction()
    {
        $this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender(TRUE);
        
        $id=substr($this->_getParam('id'),5);
        $date=$this->_getParam('date');
        
        $record['lanzar'] =$this->_calculaLanzar($date);
        $record['fecha']=$date;
        $record['responsable']=$this->_auth->getIdentity()->id;

        $record['cambio_aceptado']=null;
        $record['responde_cambio']=null;
        $record['notas_cambio']=null;
        $record['fecha_peticion_cambio']=$this->_calculaLanzar($date,25);
        
        $this->_model->default->updateRow($record,$id);
        
        
    }
    
    private function _calculaLanzar($fecha,$dias=15)
    {
      
        $fecha = new Zend_Date($fecha,Zend_Date::ISO_8601);
        
        $lanzar = $fecha->sub(15, Zend_Date::DAY);
        //si es sabado o domingo adelantar avisos a viernes
        if ($lanzar->get(Zend_Date::WEEKDAY_DIGIT) == 0)
        {
            $lanzar->sub(2, Zend_Date::DAY);
        } elseif ($lanzar->get(Zend_Date::WEEKDAY_DIGIT) == 6)
        {
            $lanzar->sub(1, Zend_Date::DAY);
        }
        
        return $lanzar->toString('yyyy-MM-dd');

    }
    
    
    
    
   
    protected function _prepareValuesToDb()
    {
         $row= $this->_form->getValues();
         if($this->_actionName=='insertar')
         {
            $row['fecha']=$this->_getParam('fecha');
            $row['lanzar'] =$this->_calculaLanzar($row['fecha']);
         }
         
         Sgit_Util_removeFiles::run($this->_file_upload[1]['tabla'], $this->_file_upload[1]['key'], $this->_id, $row[$this->_file_upload[1]['activo']]);
         unset($row[$this->_file_upload[1]['name']]);
         unset($row[$this->_file_upload[1]['activo']]);
         
         
         return $row;
    }
   

    protected function _prepareValuesToForm($row)
    {

        $row['fecha']=Sgit_Filter_DateDbToForm::filter($row['fecha']);
        $row['lanzar']=Sgit_Filter_DateDbToForm::filter($row['lanzar']);
        
        
        if(!$this->_getParam('id'))
        {
            $row['responsable']=$this->_auth->getIdentity()->id;;
        }
        
        
        return $row;
    }


    function _createli($row)
    {
        
        
        $class="d".$row['id_zona'];
       	$fecha=new Zend_Date($row['fecha'],Zend_Date::ISO_8601);
            

        if($row['hora_inicio']){
            $fecha->set($row['hora_inicio'],'WW');
            $hora_inicio=$fecha->toString('H:mm ');
        }else{
            $hora_inicio='';
        }    
            
            
            
        $lanzar=new Zend_Date($row['lanzar'],Zend_Date::ISO_8601);
			
        $titulo2 =Sgit_Cache::single()->model('Datacenter')->getKey($row['id_zona']).' '.$fecha->toString('EEEE, d MMMM yyyy').'<br>'. $row['nombre'];	
        $titulo='<b>'.$hora_inicio.'</b>'.Sgit_Cache::single()->model('Datacenter')->getKey($row['id_zona'],'ini').' '.$row['nombre'];
        			
        if($row['cambio_aceptado']=='SI'){
            $cambio_aceptado='aceptado';
        }elseif($row['cambio_aceptado']=='NO'){
            $cambio_aceptado='denegado';
        }else{
            $cambio_aceptado='propuesta';
        }
        
        
        if($fecha->isEarlier(Zend_Date::now())){
            $row['estado']='ui-icon-circle-check';
        }
        
        $area=new Sgit_Form_Element_Select_Xml('DCDepartamentos');
        $departamento= $area->getMultiOption($row['id_departamento']);
        
        $file=$this->view->showFiles('intervenciones','file',$row['id'],false);
        
        
        $day='<li id="fila-'.$row['id'].'" class="draggable item '.$class.' '.$cambio_aceptado.'">'
        .'<a class="jTip"  rel="/intervenciones/tip/id/'.$row['id'].'" title="'.$titulo2.'">'.$titulo.' </a>' 
        .'<span class="area">'.$departamento.'</span>'.$file
        .'<div class="ui-state-focus conf">'
        .'<span class="ui-icon '.$row['estado'].' myicon" title="Estado"></span>'
        .'<div class="butonset"><a class="boton mover" title="Mover"></a>'
        .'<a class="boton copiar" title="Copiar"></a>'
        .'<a class="boton borrar_inter" title="Borrar"></a>'
        .'<a class="boton editar_inter" title="Editar"></a></div>'
        .'</div></li>';
        
        
        return $day;
    }



}


